/**
 * @author WRP
 */

// DIRECTIVE PARA CALCULAR O TAMANHO DA TELA
angular.module('resize',[]).directive('resizeMensagem', function() {
		
    return {
        restrict: 'AC',
        link: function (scope, element, attrs) {
        	
        	if(scope.largura){
        		largura            =  (scope.largura < 390) ? 390 : scope.largura+35;	
        	}else{
        		largura  = 390;	
        	}
        	
        	metade   = parseInt(largura/2);
        	
            element.css({
            	'position':'absolute',
            	 'width': 'auto',
            	'left':'50%',
            	'top':'50%',
                'margin-left': '-'+metade+"px" 
            });
        }
  }
});


// FACTORY COM AS FUNÇÕES 
angular.module('mensagem',['ui.bootstrap','resize']).factory('mensagem',function ($modal) {
	
	var modalMensagem     = {};
	var variavelInstaciada= false;
	
	if(!isNaN(modalMensagem)){
		modalMensagem.close();
	}
	
	
	mensagens             = {};
	var dadosMensagemObj  = {};
	
	mensagens.closeMensagem = function(){
		modalMensagem.close();
	};
	
	mensagens.sucesso   = function(msg,largura){
		 
		 if(variavelInstaciada){
			modalMensagem.close();	
		 }
		
		 dadosMensagemObj.msg     = msg;
		 dadosMensagemObj.largura = largura;
		 
		 modalMensagem = $modal.open({
		      templateUrl: 'MyMensagemSucesso',   
		      controller: MyCtrlMensagem
		 
		 });
		 
		 variavelInstaciada = true;	
	};
	
	
	mensagens.erro   = function(msg,largura){
		
		if(variavelInstaciada){
			modalMensagem.close();	
		}
			 
		 dadosMensagemObj.msg     = msg;
		 dadosMensagemObj.largura = largura;
		 
		 modalMensagem = $modal.open({
		      templateUrl: 'MyMensagemErro',   
		      controller: MyCtrlMensagem
		 
		 });
		 
		 variavelInstaciada = true;		
	};
	
	mensagens.confirmacao   = function(msg,funcaoRetorno,largura){
		 
		 if(variavelInstaciada){
			modalMensagem.close();	
		 }
		 
		 dadosMensagemObj.msg           = msg;
		 dadosMensagemObj.largura       = largura;
		 dadosMensagemObj.funcaoRetorno = funcaoRetorno;
		 
		 modalMensagem = $modal.open({
		      templateUrl: 'MyMensagemConfirmacao',   
		      controller: MyCtrlMensagem
		 
		 });
		 
		 variavelInstaciada = true;		
	};
	
	mensagens.getDadosMensagem = function(){
		return dadosMensagemObj;
	};
	
	return  mensagens;
});


// CONTROLE 
function MyCtrlMensagem ($scope,mensagem){
	
	$scope.mensagem  = mensagem.getDadosMensagem().msg;
	$scope.largura   = mensagem.getDadosMensagem().largura;
	 
	$scope.myStyle = function() {
		
		if(mensagem.getDadosMensagem().largura){
			largura = mensagem.getDadosMensagem().largura;
		}else{
			largura = 350;
		}
		
        return {
            width: largura+'px' 
        };
    }; 
	     
	$scope.close = function (){		
	  	mensagem.closeMensagem();
	};
	
	$scope.confirma = function (paran){
		if(mensagem.getDadosMensagem().funcaoRetorno){
			mensagem.getDadosMensagem().funcaoRetorno(paran);	
		}		
	  	$scope.close();
	};
	
};



